Universal availability of digital video cameras and storage products has enabled new uses of digital video. In contrast to the traditional network delivery of video (e.g., digital satellite or cable television), an increasing amount of video is being captured by users using their cameras and smartphones and shared over the Internet with others.
Although the availability of Internet-connected video capturing devices (e.g., mobile computing devices) has soared, the ability of these devices to encode, or compress, and upload the captured audio/video content remains limited. Furthermore, these devices, such as Internet-connected cameras, tablets and smartphones, may frequently be offline and thus rely on a service provider to make content captured from the devices available to others at the time and place others want to view the content. As an example, users may employ a social networking service to share their videos.
These videos can be encoded by mobile computing devices, for example, prior to an upload process to a server computing device, or by a server computing device of the social networking service, for example, prior to a download process to mobile computing devices.
Video coders and decoders (“codecs”) commonly use constant bitrate and/or variable bitrate compression schemes. Constant bitrate (“CBR”) means that a constant number of bits is available per frame. This can result in wasted bits when the scene between frames does not change very much. Variable bitrate (“VBR”) means that a variable number of bits is available per frame. Although this can be beneficial when the scene between frames does not change very much, it may require too many bits when the scene changes rapidly between frames. Neither the CBR nor the VBR encoding or compression schemes, however, accounts for processor speeds or fluctuations in data communications bandwidth. Data compression and encoding can require significant processing and, if data communications bandwidth varies over time, the time required to communicate an average number of bits can fluctuate. These changes can cause the communicated frame rate to vary. When frame rates vary, the resulting video can appear to be choppy or pose other problems for viewers.
Although the flow and sequence diagrams presented herein show an organization designed to make them more comprehensible by a human reader, those skilled in the art will appreciate that actual data structures used to store this information may differ from what is shown in that they, for example, may be organized in a different manner, may contain more or less information than shown, may be compressed and/or encrypted, etc.
The headings provided herein are for convenience only and do not necessarily affect the scope or meaning of the claimed embodiments. Further, the drawings have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be expanded or reduced to help improve the understanding of the embodiments. Similarly, some components and/or operations may be separated into different blocks or combined into a single block for the purposes of discussion of some of the embodiments. Moreover, while the various embodiments are amenable to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are described in detail below. The intention, however, is not to limit the particular embodiments described. On the contrary, the embodiments are intended to cover all modifications, equivalents, and alternatives falling within the scope of the disclosed embodiments as defined by the appended claims.